summaryrefslogtreecommitdiffstats
path: root/src/Blocks/BlockObserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Blocks/BlockObserver.h')
-rw-r--r--src/Blocks/BlockObserver.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Blocks/BlockObserver.h b/src/Blocks/BlockObserver.h
index 30c19ba2e..78a4c05b2 100644
--- a/src/Blocks/BlockObserver.h
+++ b/src/Blocks/BlockObserver.h
@@ -16,4 +16,27 @@ public:
{
}
+ inline static Vector3i GetObservingFaceOffset(NIBBLETYPE a_Meta)
+ {
+ return -GetSignalOutputOffset(a_Meta);
+ }
+
+ inline static Vector3i GetSignalOutputOffset(NIBBLETYPE a_Meta)
+ {
+ switch (a_Meta & 0x7)
+ {
+ case 0x00: return { 0, 1, 0 };
+ case 0x01: return { 0, -1, 0 };
+ case 0x02: return { 0, 0, 1 };
+ case 0x03: return { 0, 0, -1 };
+ case 0x04: return { 1, 0, 0 };
+ case 0x05: return { -1, 0, 0 };
+ default:
+ {
+ LOGWARNING("%s: Unknown metadata: %d", __FUNCTION__, a_Meta);
+ ASSERT(!"Unknown metadata while determining orientation of observer!");
+ return { 0, 0, 0 };
+ }
+ }
+ }
};